<html><head><meta charset="utf-8"/><title>Web开发</title></head><body><h1>Web开发</h1><div class="x-wiki-content x-main-content">
 <p>
  最早的软件都是运行在大型机上的，软件使用者通过“哑终端”登陆到大型机上去运行软件。后来随着PC机的兴起，软件开始主要运行在桌面上，而数据库这样的软件运行在服务器端，这种Client/Server模式简称CS架构。
 </p>
 <p>
  随着互联网的兴起，人们发现，CS架构不适合Web，最大的原因是Web应用程序的修改和升级非常迅速，而CS架构需要每个客户端逐个升级桌面App，因此，Browser/Server模式开始流行，简称BS架构。
 </p>
 <p>
  在BS架构下，客户端只需要浏览器，应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器，获取Web页面，并把Web页面展示给用户即可。
 </p>
 <p>
  当然，Web页面也具有极强的交互性。由于Web页面是用HTML编写的，而HTML具备超强的表现力，并且，服务器端升级后，客户端无需任何部署就可以使用到新的版本，因此，BS架构迅速流行起来。
 </p>
 <p>
  今天，除了重量级的软件如Office，Photoshop等，大部分软件都以Web形式提供。比如，新浪提供的新闻、博客、微博等服务，均是Web应用。
 </p>
 <p>
  Web应用开发可以说是目前软件开发中最重要的部分。Web开发也经历了好几个阶段：
 </p>
 <p>
  静态Web页面：由文本编辑器直接编辑并生成静态的HTML页面，如果要修改Web页面的内容，就需要再次编辑HTML源文件，早期的互联网Web页面就是静态的；
 </p>
 <p>
  CGI：由于静态Web页面无法与用户交互，比如用户填写了一个注册表单，静态Web页面就无法处理。要处理用户发送的动态数据，出现了Common Gateway Interface，简称CGI，用C/C++编写。
 </p>
 <p>
  ASP/JSP/PHP：由于Web应用特点是修改频繁，用C/C++这样的低级语言非常不适合Web开发，而脚本语言由于开发效率高，与HTML结合紧密，因此，迅速取代了CGI模式。ASP是微软推出的用VBScript脚本编程的Web开发技术，而JSP用Java来编写脚本，PHP本身则是开源的脚本语言。
 </p>
 <p>
  MVC：为了解决直接用脚本语言嵌入HTML导致的可维护性差的问题，Web应用也引入了Model-View-Controller的模式，来简化Web开发。ASP发展为ASP.Net，JSP和PHP也有一大堆MVC框架。
 </p>
 <p>
  目前，Web开发技术仍在快速发展中，异步开发、新的MVVM前端技术层出不穷。
 </p>
 <p>
  由于Node.js把JavaScript引入了服务器端，因此，原来必须使用PHP/Java/C#/Python/Ruby等其他语言来开发服务器端程序，现在可以使用Node.js开发了！
 </p>
 <p>
  用Node.js开发Web服务器端，有几个显著的优势：
 </p>
 <p>
  一是后端语言也是JavaScript，以前掌握了前端JavaScript的开发人员，现在可以同时编写后端代码；
 </p>
 <p>
  二是前后端统一使用JavaScript，就没有切换语言的障碍了；
 </p>
 <p>
  三是速度快，非常快！这得益于Node.js天生是异步的。
 </p>
 <p>
  在Node.js诞生后的短短几年里，出现了无数种Web框架、ORM框架、模版引擎、测试框架、自动化构建工具，数量之多，即使是JavaScript老司机，也不免眼花缭乱。
 </p>
 <p>
  常见的Web框架包括：
  <a href="http://expressjs.com/">
   Express
  </a>
  ，
  <a href="http://sailsjs.org/">
   Sails.js
  </a>
  ，
  <a href="http://koajs.com/">
   koa
  </a>
  ，
  <a href="https://www.meteor.com/">
   Meteor
  </a>
  ，
  <a href="http://derbyjs.com/">
   DerbyJS
  </a>
  ，
  <a href="https://www.totaljs.com/">
   Total.js
  </a>
  ，
  <a href="http://restify.com/">
   restify
  </a>
  ……
 </p>
 <p>
  ORM框架比Web框架要少一些：
  <a href="http://www.sequelizejs.com">
   Sequelize
  </a>
  ，
  <a href="http://dresende.github.io/node-orm2/">
   ORM2
  </a>
  ，
  <a href="http://bookshelfjs.org/">
   Bookshelf.js
  </a>
  ，
  <a href="http://vincit.github.io/objection.js/">
   Objection.js
  </a>
  ……
 </p>
 <p>
  模版引擎PK：
  <a href="http://jade-lang.com/">
   Jade
  </a>
  ，
  <a href="http://ejs.co/">
   EJS
  </a>
  ，
  <a href="https://github.com/paularmstrong/swig">
   Swig
  </a>
  ，
  <a href="http://mozilla.github.io/nunjucks/">
   Nunjucks
  </a>
  ，
  <a href="http://olado.github.io/doT/">
   doT.js
  </a>
  ……
 </p>
 <p>
  测试框架包括：
  <a href="http://mochajs.org/">
   Mocha
  </a>
  ，
  <a href="http://visionmedia.github.io/expresso/">
   Expresso
  </a>
  ，
  <a href="http://unitjs.com/">
   Unit.js
  </a>
  ，
  <a href="http://karma-runner.github.io/">
   Karma
  </a>
  ……
 </p>
 <p>
  构建工具有：
  <a href="http://gruntjs.com/">
   Grunt
  </a>
  ，
  <a href="http://gulpjs.com/">
   Gulp
  </a>
  ，
  <a href="http://webpack.github.io/">
   Webpack
  </a>
  ……
 </p>
 <p>
  目前，在npm上已发布的开源Node.js模块数量超过了30万个。
 </p>
 <p>
  有选择恐惧症的朋友，看到这里可以洗洗睡了。
 </p>
 <p>
  好消息是这个教程已经帮你选好了，你只需要跟着教程一条道走到黑就可以了。
 </p>
</div>
</body></html>